{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei'] \n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "plt.rcParams['figure.figsize'] = (8.0, 6.0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 产生新画布\n",
    "fig = plt.figure()\n",
    "# 获取当前画布\n",
    "figa = plt.gca()\n",
    "\n",
    "# 产生100个点\n",
    "N = 100\n",
    "xn = np.random.rand(N, 2)\n",
    "# shift + tab 查看函数定义\n",
    "x = np.linspace(0, 1, num=50)\n",
    "\n",
    "# 随机产生一条线\n",
    "a = 0.8\n",
    "b = 0.1\n",
    "f = lambda x : a*x + b \n",
    "plt.plot(x, f(x), 'r')\n",
    "\n",
    "# 线性分割前面产生的点\n",
    "yn = np.zeros([N, 1])\n",
    "\n",
    "for i in range(N):\n",
    "    if f(xn[i, 0]) >= xn[i, 1]:\n",
    "        # point is below line\n",
    "        yn[i] = 1\n",
    "        plt.plot(xn[i ,0], xn[i ,1], 'bo', markersize=12)\n",
    "    else:\n",
    "        # point is above line\n",
    "        yn[i] = -1\n",
    "        plt.plot(xn[i ,0], xn[i ,1], 'go', markersize=12)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8 0.1\n",
      "[0.81897051] [0.08882681]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '原始曲线与感知机预测结果比较')"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def perception(xn, yn):\n",
    "    alpha = 0.1\n",
    "    N = xn.shape[0]\n",
    "    w = np.random.randn(3, 1)\n",
    "    f = lambda x : np.sign(w[1]*x[0] + w[2]*x[1] + w[0])\n",
    "    # The sign function returns -1 if x < 0,  0 if x==0,  1 if x > 0\n",
    "    for _ in range(50000):\n",
    "        i = np.random.randint(N)\n",
    "        if yn[i] != f(xn[i,:]):\n",
    "            # xn[0,:], xn的第一行的数据\n",
    "            w[0] = w[0] + alpha * yn[i] * 1       \n",
    "            w[1] = w[1] + alpha * yn[i] * xn[i, 0]\n",
    "            w[2] = w[2] + alpha * yn[i] * xn[i, 1]\n",
    "    return w\n",
    "\n",
    "w = perception(xn, yn)\n",
    "predict_a = - w[1] / w[2]\n",
    "predict_b = - w[0] / w[2]\n",
    "\n",
    "y = lambda x : predict_a * x + predict_b\n",
    "\n",
    "# 分割颜色\n",
    "sep_color = yn / 2.0\n",
    "\n",
    "print(a, b)\n",
    "print(predict_a, predict_b)\n",
    "plt.figure()\n",
    "figa = plt.gca()\n",
    "plt.scatter(xn[:, 0], xn[:, 1], c=sep_color.flatten(), s=50)\n",
    "plt.plot(x, y(x), 'b--', label='感知机分类结果')\n",
    "plt.plot(x, f(x), 'r', label='原始分类曲线')\n",
    "plt.legend()\n",
    "plt.title('原始曲线与感知机预测结果比较')\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
